﻿namespace gixoom.Dom.Storage.Block
{
    public interface IBlockStorageFacade
    {
        /// <summary>
        /// Creates source block storage using the specified host addresses.
        /// </summary>
        /// <param name="addresses">host addresses</param>
        /// <returns>created source block storage</returns>
        /// <exception cref="System.ArgumentNullException"><i>addresses</i> is a null reference.
        /// </exception>
        /// <exception cref="System.ArgumentException"><i>addresses</i> length is too short.</exception>
        IBlockStorage CreateSourceBlockStorage(string[] addresses);

        /// <summary>
        /// Creates files block storage object.
        /// </summary>
        /// <param name="filesPath">the files path</param>
        /// <returns>created files block storage object</returns>
        /// <exception cref="System.ArgumentNullException"><i>filesPath</i> is a null reference</exception>
        /// <exception cref="System.ArgumentException"><i>filesPath</i> is an empty string.</exception>
        IBlockStorage CreateFilesBlockStorage(string filesPath);
    }
}
